home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / wais / waisgate / foldedeq.c < prev    next >
Text File  |  1995-05-09  |  4KB  |  97 lines

  1. /* ********************************************************************** *\
  2.  *         Copyright IBM Corporation 1988,1991 - All Rights Reserved      *
  3. ############################################################################
  4. #        Copyright IBM Corporation 1988, 1991 - All Rights Reserved        #
  5. #                                                                          #
  6. # Permission to use, copy, modify, and distribute this software and its    #
  7. # documentation for any purpose and without fee is hereby granted,         #
  8. # provided that the above copyright notice appear in all copies and        #
  9. # that both that copyright notice and this permission notice appear in     #
  10. # supporting documentation, and that the name of IBM not be used in        #
  11. # advertising or publicity pertaining to distribution of the software      #
  12. # without specific, written prior permission.                              #
  13. #                                                                          #
  14. # IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL #
  15. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL IBM #
  16. # BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY      #
  17. # DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER  #
  18. # IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING   #
  19. # OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.    #
  20. ############################################################################
  21. \* ********************************************************************** */
  22. /* $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R5/ftp/src/overhead/util/lib/RCS/foldedeq.c,v 2.5 1991/09/12 17:25:33 bobg Exp $ */
  23. /* $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R5/ftp/src/overhead/util/lib/RCS/foldedeq.c,v $ */
  24.  
  25. #ifndef lint
  26. static char *rcsid = "$Header: ";
  27. #endif /* lint */
  28.  
  29. int FoldTRT[256] = {
  30.     0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
  31.     21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, '!', '"', '#', '$', '%',
  32.     '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4',
  33.     '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', '@', 'a', 'b', 'c',
  34.     'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r',
  35.     's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '[', '\\', ']', '^', '_', '`', 'a',
  36.     'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
  37.     'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', 127,
  38.     128, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
  39.     21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, '!', '"', '#', '$', '%',
  40.     '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4',
  41.     '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', '@', 'a', 'b', 'c',
  42.     'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r',
  43.     's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '[', '\\', ']', '^', '_', '`', 'a',
  44.     'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
  45.     'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', 127,
  46. };
  47.  
  48. /*
  49.   if (s1 < s2) lexicographically, return a value less than 0;
  50.   if (s1 == s2) return 0;
  51.   if (s1 > s2) return a value greater than 0;
  52.  
  53.   High bits are disregarded EXCEPT for character 128.
  54.   */
  55.  
  56. lc_strcmp(s1, s2)
  57.     register unsigned char *s1;
  58.     register unsigned char *s2;
  59. {
  60.     while (*s1 && (FoldTRT[*s1] == FoldTRT[*s2])) {
  61.     ++s1;
  62.     ++s2;
  63.     }
  64.  
  65.     return FoldTRT[*s1] - FoldTRT[*s2];
  66. }
  67.  
  68. lc_strncmp(s1, s2, n)
  69.     register unsigned char *s1;
  70.     register unsigned char *s2;
  71. {
  72.     while (n && *s1 && (FoldTRT[*s1] == FoldTRT[*s2])) {
  73.     --n;
  74.     ++s1;
  75.     ++s2;
  76.     }
  77.  
  78.     return n == 0 ? 0 : FoldTRT[*s1] - FoldTRT[*s2];
  79. }
  80.  
  81. FoldedEQ(s1, s2)
  82.     register unsigned char *s1;
  83.     register unsigned char *s2;
  84. {
  85.     return (lc_strcmp(s1, s2) == 0);
  86. }
  87.  
  88. FoldedEQn(s1, s2, n)
  89.     register unsigned char *s1;
  90.     register unsigned char *s2;
  91.     register int n;
  92. {
  93.     return (lc_strncmp(s1, s2, n) == 0);
  94. }
  95.  
  96.  
  97.